今天,我們要來說到背景服務的部分,當我們在完全關閉APP的情況下,所有工作也會停止,那麼我們就需要用到Service來執行背景作業。
Service最大的特點就是在APP完全關閉的情況下保持啟動,且能夠在執行時使用其他程式,在執行任務的期間,與我們使用者無關,它是會獨立運行的,可以試想成當我們將Line或是Instagram這些通訊社交程式都滑掉關閉的時候,當有人傳訊息等等,我們手機還是會跳出通知讓我們看到,又或是說當我們在下載檔案時,我們也能繼續執行其他程式等待檔案的下載,這些都是Service使用的範例。
那接著,我們就先來創建一個新的Service吧!按照下圖路徑創建
點選後會呈現如下圖,名稱部分我就使用預設的了,接著按下Finish。
完成後,系統會自動產生MyService的類別檔。
接著我們要來介紹啟動Service,第一次產生要使用onCreate()的方法,之後就會自動呼叫onStartCommand()方法,將要執行的任務寫在onStartCommand()中,要結束時呼叫stopSelf()使Service進行結束程序,之後皆會呼叫onDestroy()結束服務。
onStartCommand()扮演著接受外來請求並操作Service的角色,它的第一個參數intent可接受由Activity啟動時所含的資訊,第二個參數表示啟動的方法,第三個參數表示啟動識別碼。
返回值有三種定義:
START_NOT_STICKY:如果Service被結束時,便結束服務。
START_STICKY: 如果Service被結束時,回嘗試啟動並呼叫onStartCommand(),但Intent會被清空。
START_REDELIVER_INTENT:跟上一個一樣,但Intent會被保留並重新輸入。